【JAVA】探讨 Java 中 valueOf 和 parseInt 的区别 | 您所在的位置:网站首页 › integer valueof和parseint › 【JAVA】探讨 Java 中 valueOf 和 parseInt 的区别 |
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 前言在编程中,遇到类型转换,好像会经常用到 parseInt 和 valueOf,当然这里只拿 Integer 类型进行陈述,其他类型也是雷同的; 想必有读者也跟我一样,经常交叉使用这两个方法,但却不知道这两者到底有什么区别,接下来就来探究一番; 区别 Integer.parseInt(s) 的作用就是把字符串 s 解析成有符号基本类型的 int; Integer.valueOf(s) 把字符串 s 解析成 Integer 对象类型,返回的对象可以调用 Integer 中的方法;接下来,通过源码进行逐一解析; parseInt我们首先点进 parseInt() 方法中, public static int parseInt(String s) throws NumberFormatException { return parseInt(s, 10); }可以看到,这个被我们调用的 parseInt() 方法返回了一个重载方法: public static int parseInt(String s, int radix) throws NumberFormatException { if (s == null) { throw new NumberFormatException("null"); } else if (radix < 2) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } else if (radix > 36) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } else { boolean negative = false; int i = 0; int len = s.length(); int limit = -2147483647; if (len 36) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); } else {3、接着往下,再一次对长度进行一个校验, int len = s.length(); if (len = -128 && i archivedCache.length) { Integer[] c = new Integer[size]; int j = -128; for(int k = 0; k < c.length; ++k) { c[k] = new Integer(j++); } archivedCache = c; } cache = archivedCache; assert high >= 127; } }整体就是初始化一个 IntegerCache.cache 数组,数组里面存储-128到127之间的数字当做是缓存,源码一开始是分析数组长度,然后给数组赋值; 总的来说,三个重构的 valueOf() 方法还是大同小异的: Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例; Integer valueOf(String s):返回保存指定的 String 的值的 Integer 对象; Integer valueOf(String s, int radix):返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值;后记 看源码还是能学到很多东西的,源码自有黄金屋,多看多学,夯实基础,之后会轻松高效很多! |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |